/**
ES6 对象 新增的  一组 静态方法：
  Object.freeze(obj/arr)
   作用：冻结一个对象/数组，返回冻结后的对象/数组，和源对象/数组是同一个对象/数组
    一旦对象/数组被冻结了之后，有如下特点：
    1. 属性/下标元素 不可删除
    2. 属性/下标元素 不可修改
    3. 不可扩展（新增）新属性/元素
    只能获取属性/指定下标的元素
  Object.isFrozen(): 判断一个对象/数组是否被冻结了
  Object.isExtensible(): 判断一个对象/数组是否是可扩展的
                              （是否可以在它上面添加新的属性/元素）

  应用场景：优雅的 定义 枚举，枚举 是一个 有限的 集合，比如，性别，订单状态，星期等...

  获取源码、答疑、更多学习资料... ，添加个人VX： jspr_1314，


*/
// const obj = {
//   name: '杜兰特',
//   team: '雷霆'
// }

// const o = Object.freeze(obj)
// console.log(o)// 
// console.log(o === obj)// true

// 修改 team属性
// obj.team = '篮网'
// 删除 team属性
// delete obj.team
// 新增 nickname 属性
// obj.nickname = '包工头'

// 获取属性是可以 或 遍历
// console.log(obj.name)
// console.log(obj.team)
// Object.keys(obj).forEach(key => {
//   console.log(key, obj[key])
// })

const arr = ['杜兰特', '欧文', '杜克']
const list = Object.freeze(arr)
// console.log(list)
// console.log(arr === list)// true
// 修改/添加/删除 是不允许的
// unshift/push  shift/pop splice reverse  sort  fill
// arr[0] = '杜经理'
// arr.push('华子')
// arr.pop()
// 取值是可以的 或 遍历
// console.log(arr[0])
// console.log(arr[1])
// console.log(arr[2])
// arr.forEach(item => console.log(item))

// const obj = {
//   name: '杜兰特',
//   team: '雷霆'
// }
// const o = Object.freeze(obj)
// console.log(Object.isFrozen(arr))// true
// console.log(Object.isExtensible(arr))// false

// const GENDER_ENUM = Object.freeze({
//   0: '男',
//   1: '女'
// })
// const GENDER_ENUM = Object.freeze([
//   {
//     id: 0,
//     value: '男'
//   }, {
//     id: 1,
//     value: '女'
//   }
// ])
// const ORDER_STATUS_ENUM = Object.freeze({
//   0: '待付款',
//   1: '待发货',
//   2: '待收货',
//   3: '待评论'
// })

